import request from "@/utils/request";

const userApi = new Map([
    ["info", "user/info"],
    ["list", "user/list"],
    ["save", "user/save"],
    ["update", "user/save"],
    ["delete", "user/delete"],
    ["roles", "user/roles"],
    ["assignRoles", "user/assign_roles"],
    ["deleteRoles", "user/unassign_roles"],
    ["allDelete","user/all_delete"],
    ["getLoginInfo","user/get_logininfo"],
    ["setLoginInfo","user/set_logininfo"]
]);

/**
 * 获取登录用户登录信息
 * 
 * @param {number} id 用户id
 * @returns {Promise}
 */
const getUserLoginInfo = (id) => {
    return request.get(userApi.get('getLoginInfo'),{
        params:{
            id
        }
    });
}

/**
 * 设置登录用户登录信息
 * @param {Object} data
 * @param {number} data.id 用户id
 * @param {string} data.ip 上次登录ip地址
 * @param {string} data.time 上次登录时间
 * @returns {Promise}
 */
const setUserLoginInfo = (data) => {
    return request.post(userApi.get('setLoginInfo'),data);
}

/**
 * 登录用户个人信息
 *
 * @param {Object} data
 * @param {number} data.id 用户id
 * @param {string} data.name 用户名
 * @returns {Promise}
 */
const userInfo = (data) => {
    return request.get(userApi.get('info'),data);
}

/**
 * 所有用户信息
 *
 * @param {number} limit 每次展示的数据个数
 * @param {number} page 当前页码
 * @param {string} name 用户名
 * @returns {Promise}
 */
const userList = (limit,page,name) => {
    return request.get(userApi.get('list'),{
        params:{
            limit,
            page,
            name
        }
    })
}

/**
 * 添加用户
 * 
 * @param {Object} data
 * @param {string} data.name 用户名
 * @param {string} data.password 用户密码
 * @param {number} data.status 用户状态(1启用,0为禁用)
 * @param {string} data.last_login_ip 上次登录ip地址
 * @param {string} data.last_login_time 上次登录时间 
 * @returns {Promise}
 */
const userAdd = (data) => {
    return request.post(userApi.get('save'),data);
}

/**
 * 修改用户
 * 
 * @param {Object} data
 * @param {number} data.id 用户id
 * @param {string} data.name 用户名
 * @param {string} data.password 用户密码
 * @param {number} data.status 用户状态(1启用,0为禁用)
 * @param {string} data.last_login_ip 上次登录ip地址
 * @param {string} data.last_login_time 上次登录时间 
 * @returns {Promise}
 */
const userUpdate = (data) => {
    return request.post(userApi.get('update'),data);
}

/**
 * 删除用户
 * 
 * @param {number} id 用户id
 * @returns {Promise}
 */
const userDelete = (id) => {
    return request.delete(userApi.get('delete'),{
        params:{
            id
        }
    })
}

/**
 * 批量删除用户
 * 
 * @param {Array} idArray 用户id数组
 * @returns {Promise}
 */
const userAllDelete = (idArray) => {
    return request.delete(userApi.get('allDelete'),{
        data:{
            idArray
        }
    })
}

/**
 * 添加角色
 * 
 * @param {Object} data 
 * @param {number} data.user_id 用户id
 * @param {Array} data.role_id 角色id 
 * @returns {Promise}
 */
const userAddRoles = (data) => {
    return request.post(userApi.get('assignRoles'),data);
}

/**
 * 删除角色
 * 
 * @param {Object} data 
 * @param {number} data.user_id 用户id
 * @param {Array} data.role_id 角色id 
 * @returns {Promise}
 */
const userRemoveRoles = (data) => {
    return request.delete(userApi.get('deleteRoles'),{
        data:{
            user_id:data.user_id,
            role_id:data.role_id
        }
    });
}

/**
 * 用户角色信息
 *
 * @param {number} user_id 用户id
 * @returns {Promise}
 */
const userRoles = (user_id) => {
    return request.get(userApi.get('roles'),{
        params:{
            user_id
        }
    });
}

export {
    userAdd,
    userDelete,
    userUpdate,
    userInfo,
    userList,
    userAddRoles,
    userRemoveRoles,
    userRoles,
    userAllDelete,
    getUserLoginInfo,
    setUserLoginInfo
}